<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function queryData(url) {
      const p = new Promise(function (resolve, reject) {
        const xhr = new XMLHttpRequest()
        xhr.open('get', url)
        xhr.send()

        xhr.onreadystatechange = function () {
          if (xhr.readyState !== 4) { return }
          if (xhr.readyState === 4 && xhr.status === 200) {
            resolve(xhr.responseText)
          } else {
            reject('服务器有问题')
          }
        }
      })
      return p
    }

    // 串联
    queryData('http://127.0.0.1:3000/data')
      .then(function (res) {
        console.log('success111', res)
        return queryData('http://127.0.0.1:3000/data1')
      })
      .then(function (res) {
        console.log('qweqwrqweq', res)
        // 1. then内 可以写新的 promise操作，并返回， 下一个 then处理的就是这个新的promise
        return new Promise(function (resolve, reject) {
          setTimeout(function () {
            const flag = Math.random()
            if (flag > 0.5) {  // 当随机数大于 0.5就认为成功
              resolve(flag)
            } else {
              reject(flag)
            }
          }, 300)
        })
      })
      .then(function(res) {
        console.log('定时器成功了', res)
        // 2. then 返回的 是 合法的表达式， 那么 默认会当成 成功的 promise
        return 'qwer'
      }, function(err) {
        console.log('定时器失败了', err)
        return '1234'
      })
      .then(function(res) {
        console.log('last', res)
      })


  </script>
</body>

</html>